package com.scala

import org.apache.spark.{SparkConf, SparkContext}

/**
  1:RDD是一个不可变的分布式对象集合
  */
object Test2 {
  def main(args: Array[String]): Unit = {
    val conf =new SparkConf().setMaster("local").setAppName("test2")
    val sc =new SparkContext(conf);
    //创建两种RDD的方式，一种将已有的集合转入到sparkContext中去，一种是从外部存储中读取数据创建RDD
    //sc.parallelize(List("a","b","c"));
    val inputRDD=sc.textFile("/Users/hktry/testCSV.csv");
    //RDD操作
    //转化操作:返回一个新的RDD进行操作 这个是一个惰性求值过程，也就是在执行filter等操作的时候不是立即去操作，而是也记录这个命令，等有需要这数据的时候在去操作
    val name01 = inputRDD.filter(line => line.contains("李敏"));//filter操作不会改变已有的RDD的数据,实际上会返回一个新的RDD
    val name02 =inputRDD.filter(line => line.contains("张鹏"));
    val name = name01.union(name02);
    //行动操作：将驱动器程序返回的结果集写入外部系统
    println("count:"+name.count())
    name.foreach(line => println(line));
  }
}
